﻿#pragma once
#ifndef AppComponent_hpp
#define AppComponent_hpp


#include"./AppBase.hpp"


namespace MMF
{

    struct MMFCptConfig;

    struct AppComponent
    {

        //虚析构
        virtual ~AppComponent() {}

        //开始函数
        virtual bool Start() = 0;

        //配置
        virtual bool Config(const MMFCptConfig& cfg) = 0;

        //运行
        virtual bool Run() = 0;

        //停止
        virtual void Stop() = 0;
    };


    /***
     * 创建函数类型
     * 用于转换app动态库中得函数
     * 这里被设计为函数指针
    */
    using AppCptCreateFunc = AppComponent* (*)(AppBase& cfg);
}


#endif